package net.interneteidee.listener;

import java.util.Collection;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.AjaxBehaviorEvent;

import org.richfaces.component.UIExtendedDataTable;

import net.interneteidee.entity.Cliente;
import net.interneteidee.entity.LineaOrdine;
import net.interneteidee.entity.Ordine;
import net.interneteidee.entity.Prodotto;
import net.interneteidee.utility.ComponentName;

@ManagedBean
@SessionScoped
public class GenericListener implements ComponentName{
	
	
	private String selectionMode = "single";
	private Collection<Object> selection;
	
	private Cliente clienteSelezionato ;
	private LineaOrdine lineaOrdineSelezionata ;
	private Ordine ordineSelezionato ;
	private Prodotto prodottoSelezionato ;
	
	
	public void selectionListener(AjaxBehaviorEvent event) {
		UIExtendedDataTable dataTable = (UIExtendedDataTable) event.getComponent();
		Object originalKey = dataTable.getRowKey();
		initObject(dataTable);
		for (Object selectionKey : selection) {
			dataTable.setRowKey(selectionKey);
			if (dataTable.isRowAvailable()) {
				getObject(dataTable);
			}
		}
		dataTable.setRowKey(originalKey);
	}

	public void initObject(UIExtendedDataTable dataTable){
			
		if(dataTable.getId().equals(tabellaClienti))
			clienteSelezionato = new Cliente();
		else if(dataTable.getId().equals(tabellaLineeOrdine))
			lineaOrdineSelezionata = new LineaOrdine();
		else if(dataTable.getId().equals(tabellaOrdini))
			ordineSelezionato = new Ordine();
		else if(dataTable.getId().equals(tabellaProdotti))
			prodottoSelezionato = new Prodotto();
	}
	
	public void getObject(UIExtendedDataTable dataTable){
		
		if(dataTable.getId().equals(tabellaClienti))
			clienteSelezionato =  (Cliente) dataTable.getRowData();
		else if(dataTable.getId().equals(tabellaLineeOrdine))
			lineaOrdineSelezionata = (LineaOrdine) dataTable.getRowData();
		else if(dataTable.getId().equals(tabellaOrdini))
			ordineSelezionato = (Ordine) dataTable.getRowData();
		else if(dataTable.getId().equals(tabellaProdotti))
			prodottoSelezionato = (Prodotto) dataTable.getRowData();
		
	}
	
	
	public String getSelectionMode() {
		return selectionMode;
	}

	public void setSelectionMode(String selectionMode) {
		this.selectionMode = selectionMode;
	}

	public Collection<Object> getSelection() {
		return selection;
	}

	public void setSelection(Collection<Object> selection) {
		this.selection = selection;
	}

	public Cliente getClienteSelezionato() {
		return clienteSelezionato;
	}

	public void setClienteSelezionato(Cliente clienteSelezionato) {
		this.clienteSelezionato = clienteSelezionato;
	}

	public LineaOrdine getLineaOrdineSelezionata() {
		return lineaOrdineSelezionata;
	}

	public void setLineaOrdineSelezionata(LineaOrdine lineaOrdineSelezionata) {
		this.lineaOrdineSelezionata = lineaOrdineSelezionata;
	}

	public Ordine getOrdineSelezionato() {
		return ordineSelezionato;
	}

	public void setOrdineSelezionato(Ordine ordineSelezionato) {
		this.ordineSelezionato = ordineSelezionato;
	}

	public Prodotto getProdottoSelezionato() {
		return prodottoSelezionato;
	}

	public void setProdottoSelezionato(Prodotto prodottoSelezionato) {
		this.prodottoSelezionato = prodottoSelezionato;
	}
	
	

}
